// Cette fonction personnalisée régularise l'écrêtement de la CSG-CRDS // sur les indemnités d'activité partielle versées en mars 2020 IAP, SMIC, NetAvecIAP, Ecrêtement, BaseEcrêtement, TotalEcrêté sont des réels tMontantCSG est un tableau de 3 réels tTauxCSG est un tableau de 3 réels NOCO est une chaine CotisationsEcretementAbsentes est un booléen // La régularisation n'est faite que sur le premier bulletin d'avril SI CAENBU.NOBU <> "01" ALORS RENVOYER 0 // Lecture des valeurs nécessaires de Mars 2020 : Brut, IAP, Total cotisations salariales // (on somme tous les bulletins de mars) ListeRubriques est une chaine="5900;4655;4658;4659;7020" POUR TOUTE CHAINE UnNORU de ListeRubriques SEPAREE par ";" HLitRecherchePremier("CALIBU","KLIBU5",[CAENBU.COSO,CAENBU.NPPE,unNORU,"202003"],hGénérique) TANTQUE HTrouve("CALIBU") NetAvecIAP+=CALIBU.MONT SI PAS UnNORU dans ("5900","7020") ALORS IAP+=CALIBU.MONT HLitSuivant("CALIBU","KLIBU5") FIN FIN // Si pas d'activité partielle sur Mars, pas d'écrêtement SI ToucheEnfoncée(teShift) ALORS Trace("Régul Ecrêtement CSG : IAP = "+IAP) SI IAP=0 ALORS RENVOYER 0 // On calcule le SMIC pour la durée légale SMIC = Arrondi(CG.THSMIC * 35 * 52 / 12, 2) // Calcul des taux et montants des 3 parts de CRDS non déductible, CSG non déductible, CSG déductible tTauxCSG[1]=0.50 ; tTauxCSG[2]=2.40 ; tTauxCSG[3]=3.80 POUR i=1 à 3 tMontantCSG[i]=Arrondi(Arrondi(IAP*0.9825 , 2) * tTauxCSG[i] / 100 , 2) FIN // Pour les tests, on peut décommenter la ligne ci-dessous. La régul de l'écrêtement est alors neutralisé en tenant la touche Alt enfoncée //SI ToucheEnfoncée(teAlt) ALORS Trace("Régul Ecrêtement CSG abandonné (Alt enfoncé)") ; RENVOYER 0 // On écrête successivement la CRDS non déductible, la CSG non déductible à 2,40% puis la CSG déductible à 3,80% // A chacun des 3 passages successifs dans cette boucle, on calcule le total (Brut + IAP - Total cotisations salariales) // Si ce total est inférieur au SMIC, alors on écrête la part de CRDS ou CSG sur laquelle on travaille, // mais sans aller au-delà du montant de cette part de CSG POUR i=1 à 3 SI ToucheEnfoncée(teShift) ALORS Trace("Régul Ecrêtement CSG Passe "+i+" : Total net (Revenu d'activité + IAP) = "+NetAvecIAP) // Si ce brut est supérieur au SMIC, on arrête l'écrêtement SI NetAvecIAP >= SMIC ALORS SORTIR Ecretement = Min(SMIC-NetAvecIAP, tMontantCSG[i]) SI ToucheEnfoncée(teShift) ALORS Trace("Régul Ecrêtement CSG Passe "+i+" : Montant écrêté = "+Ecretement) NetAvecIAP+=Ecrêtement TotalEcrêté+=Ecrêtement // On reconstitue l'assiette du montant que l'on veut écrêter SI Ecrêtement=tMontantCSG[i] ALORS BaseEcrêtement=Arrondi(IAP*0.9825 , 2) SINON BaseEcrêtement=Arrondi(Ecrêtement / tTauxCSG[i] * 100, 2) FIN // Assiette que l'on envoie en négatif dans le tableau des régularisations de la cotisation NOCO = CAELVA.NORU[[1 à 4]]+"E"+i ftMtRegulCotisation[NOCO]="A202003:"+NumériqueVersChaîne(0-BaseEcrêtement) // Si l'écrêtement de la part courante n'a été que partiel, ce n'est pas la peine d'aller au-delà. SI Ecrêtement